<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象编程与函数编程的区别</title>
</head>
<body>
    
</body>
<script>
    /*
        现在绝大多数的编程语言都是走向面向对象的编程 -- 因为能够做到高类聚低耦合
    */

    //传统编程
    let name = 'jimmy'
    let score = [
        {name:'JS',mark:88},
        {name:'css',mark:68}
    ]
    function avage(a,b){
        // console.log(a)
        // console.log(b)
        let res = b.reduce((pre,item)=>pre+item.mark,0)
        return res/b.length
    }
    console.log(avage(name,score))     //78

    // 以上就是传统编程  我们可以看到  当用户比较少的时候 使用起来还行 可是当用户一旦变多 我们得不断的定义 不断重复相同的代码  
    //   并且代码也没有很好的模块化  


    // 使用对象编程
    let user = {
        name:'jimmy',
        score:[
            {name:'JS',mark:88},
            {name:'css',mark:68}
        ],
        avage(){
            return this.score.reduce((pre,item)=>pre+item.mark,0)/this.score.length
        }
    }
    console.log(user.avage())  //78

    /*
        可见  当我们使用面向对象的方式来编程了以后，  代码更加富有结构性  且更加容易看懂
            很好的体现了块级作用域  可以使用 this 高类聚低耦合
    */
</script>
</html>